Snackbar與Toast功能相似,都可作為提示之用。可以將Snackbar視為Toast的進階版,比Toast的功能更多,也更加美觀。
Snackbar可分為一般顯示與有按鈕的顯示,Snackbar提供一個點擊事件可供使用。接下來我們先從一般顯示來認識:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</LinearLayout>
public class MainActivity extends AppCompatActivity {
LinearLayout linearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
linearLayout = findViewById(R.id.linearLayout);
//Snackbar一般顯示
Snackbar.make(findViewById(R.id.linearLayout),
"這是 Snackbar", Snackbar.LENGTH_LONG).show();
}
}
在有一般顯示的基礎下,我們為其加上按鈕(藍色OK按鈕):
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Snackbar有按鈕的顯示
Snackbar.make(findViewById(R.id.linearLayout), "這是 Snackbar", Snackbar.LENGTH_LONG)
.setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View view) {
//點擊時要執行的動作
}
})
.setActionTextColor(Color.BLUE) //可以指定文字顏色
.show();
}
}
接下來換到較為輕量的Toast了,它與Snackbar的一般顯示十分相像,也非常簡單:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(MainActivity.this, "這是 Toast", Toast.LENGTH_SHORT).show();
}
}